package com.deyuanyun.pic.ae.controller.dto;

import com.deyuanyun.pic.ae.controller.vo.DefaultCommand;
import com.deyuanyun.pic.ae.domain.AEPipeline;
import com.deyuanyun.pic.ae.domain.EmergencyResource;
import com.deyuanyun.pic.common.util.DateUtil;
import com.deyuanyun.pic.common.util.converter.BeanConverter;
import com.deyuanyun.pic.common.util.format.DateFormat;
import org.springframework.validation.Errors;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 第三方管道信息 创建或者修改 数据传输对象
 */
public class AEPipelineEdit extends AEBaseEdit<AEPipeline> {

    // 管道编号
    private String pipeLineId;
    // 类型（自来水管、天然气管、煤气管、原油管、成品油管、下水管、通讯电缆、电力线、交流接地体、其它）
    private String type;
    // 名称
    private String name;
    // 所属单位
    private String owner;
    // 阴保方式（无、强制电流、牺牲阳极、强制电流和牺牲阳极、联合保护、其它）
    private String cptype;
    // 联系人/单位
    private String contact;
    // 联系方式
    private String telephone;
    // 相对位置关系（交叉、平行）CROSS、PARALLEL
    private String relativePositionRelation;
    // 平行_起点x
    private BigDecimal beginX;
    // 平行_起点y
    private BigDecimal beginY;
    // 平行_起点z
    private BigDecimal beginZ;
    // 起点位置描述
    private String beginDescription;
    // 平行_终点x
    private BigDecimal endX;
    // 平行_终点y
    private BigDecimal endY;
    // 平行_终点z
    private BigDecimal endZ;
    // 终点位置描述
    private String endDescription;
    // 最小平行间距（m）
    private BigDecimal minDistance;
    // 交叉_x
    private BigDecimal crossX;
    // 交叉_y
    private BigDecimal crossY;
    // 交叉_z
    private BigDecimal crossZ;
    // 交叉_位置描述
    private String locationDescription;
    // 交叉_垂直间距（m）
    private BigDecimal altitudeSeparation;
    // 是否为安全间距（YES、NO）
    private String safeHeight;

    public String getPipeLineId() {
        return pipeLineId;
    }

    public void setPipeLineId(String pipeLineId) {
        this.pipeLineId = pipeLineId;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getOwner() {
        return owner;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public String getCptype() {
        return cptype;
    }

    public void setCptype(String cptype) {
        this.cptype = cptype;
    }

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getRelativePositionRelation() {
        return relativePositionRelation;
    }

    public void setRelativePositionRelation(String relativePositionRelation) {
        this.relativePositionRelation = relativePositionRelation;
    }

    public BigDecimal getBeginX() {
        return beginX;
    }

    public void setBeginX(BigDecimal beginX) {
        this.beginX = beginX;
    }

    public BigDecimal getBeginY() {
        return beginY;
    }

    public void setBeginY(BigDecimal beginY) {
        this.beginY = beginY;
    }

    public BigDecimal getBeginZ() {
        return beginZ;
    }

    public void setBeginZ(BigDecimal beginZ) {
        this.beginZ = beginZ;
    }

    public String getBeginDescription() {
        return beginDescription;
    }

    public void setBeginDescription(String beginDescription) {
        this.beginDescription = beginDescription;
    }

    public BigDecimal getEndX() {
        return endX;
    }

    public void setEndX(BigDecimal endX) {
        this.endX = endX;
    }

    public BigDecimal getEndY() {
        return endY;
    }

    public void setEndY(BigDecimal endY) {
        this.endY = endY;
    }

    public BigDecimal getEndZ() {
        return endZ;
    }

    public void setEndZ(BigDecimal endZ) {
        this.endZ = endZ;
    }

    public String getEndDescription() {
        return endDescription;
    }

    public void setEndDescription(String endDescription) {
        this.endDescription = endDescription;
    }

    public BigDecimal getMinDistance() {
        return minDistance;
    }

    public void setMinDistance(BigDecimal minDistance) {
        this.minDistance = minDistance;
    }

    public BigDecimal getCrossX() {
        return crossX;
    }

    public void setCrossX(BigDecimal crossX) {
        this.crossX = crossX;
    }

    public BigDecimal getCrossY() {
        return crossY;
    }

    public void setCrossY(BigDecimal crossY) {
        this.crossY = crossY;
    }

    public BigDecimal getCrossZ() {
        return crossZ;
    }

    public void setCrossZ(BigDecimal crossZ) {
        this.crossZ = crossZ;
    }

    public String getLocationDescription() {
        return locationDescription;
    }

    public void setLocationDescription(String locationDescription) {
        this.locationDescription = locationDescription;
    }

    public BigDecimal getAltitudeSeparation() {
        return altitudeSeparation;
    }

    public void setAltitudeSeparation(BigDecimal altitudeSeparation) {
        this.altitudeSeparation = altitudeSeparation;
    }

    public String getSafeHeight() {
        return safeHeight;
    }

    public void setSafeHeight(String safeHeight) {
        this.safeHeight = safeHeight;
    }

    @Override
    public void fromDomain(AEPipeline domain){
        // 管道编号
        this.pipeLineId = domain.getPipeLineId();
        // 类型（自来水管、天然气管、煤气管、原油管、成品油管、下水管、通讯电缆、电力线、交流接地体、其它）
        this.type = domain.getType();
        // 名称
        this.name = domain.getName();
        // 所属单位
        this.owner = domain.getOwner();
        // 阴保方式（无、强制电流、牺牲阳极、强制电流和牺牲阳极、联合保护、其它）
        this.cptype = domain.getCptype();
        // 联系人/单位
        this.contact = domain.getContact();
        // 联系方式
        this.telephone = domain.getTelephone();
        // 相对位置关系（交叉、平行）CROSS、PARALLEL
        this.relativePositionRelation = domain.getRelativePositionRelation();
        // 平行_起点x
        this.beginX = domain.getBeginX();
        // 平行_起点y
        this.beginY = domain.getBeginY();
        // 平行_起点z
        this.beginZ = domain.getBeginZ();
        // 起点位置描述
        this.beginDescription = domain.getBeginDescription();
        // 平行_终点x
        this.endX = domain.getEndX();
        // 平行_终点y
        this.endY = domain.getEndY();
        // 平行_终点z
        this.endZ = domain.getEndZ();
        // 终点位置描述
        this.endDescription = domain.getEndDescription();
        // 最小平行间距（m）
        this.minDistance = domain.getMinDistance();
        // 交叉_x
        this.crossX = domain.getCrossX();
        // 交叉_y
        this.crossY = domain.getCrossY();
        // 交叉_z
        this.crossZ = domain.getCrossZ();
        // 交叉_位置描述
        this.locationDescription = domain.getLocationDescription();
        // 交叉_垂直间距（m）
        this.altitudeSeparation = domain.getAltitudeSeparation();
        // 是否为安全间距（YES、NO）
        this.safeHeight = domain.getSafeHeight();

        super.fromDomain(domain.getId(), domain.getRecorder(), domain.getRecordTime(), domain.getRemarks());
    }

    @Override
    public AEPipeline toDomain() {

        AEPipeline aePipeline = new AEPipeline();
        // 管道编号
        aePipeline.setPipeLineId(this.pipeLineId);
        // 类型（自来水管、天然气管、煤气管、原油管、成品油管、下水管、通讯电缆、电力线、交流接地体、其它）
        aePipeline.setType(this.type);
        // 名称
        aePipeline.setName(this.name);
        // 所属单位
        aePipeline.setOwner(this.owner);
        // 阴保方式（无、强制电流、牺牲阳极、强制电流和牺牲阳极、联合保护、其它）
        aePipeline.setCptype(this.cptype);
        // 联系人/单位
        aePipeline.setContact(this.contact);
        // 联系方式
        aePipeline.setTelephone(this.telephone);
        // 相对位置关系（交叉、平行）CROSS、PARALLEL
        aePipeline.setRelativePositionRelation(this.relativePositionRelation);
        // 平行_起点x
        aePipeline.setBeginX(this.beginX);
        // 平行_起点y
        aePipeline.setBeginY(this.beginY);
        // 平行_起点z
        aePipeline.setBeginZ(this.beginZ);
        // 起点位置描述
        aePipeline.setBeginDescription(this.beginDescription);
        // 平行_终点x
        aePipeline.setEndX(this.endX);
        // 平行_终点y
        aePipeline.setEndY(this.endY);
        // 平行_终点z
        aePipeline.setEndZ(this.endZ);
        // 终点位置描述
        aePipeline.setEndDescription(this.endDescription);
        // 最小平行间距（m）
        aePipeline.setMinDistance(this.minDistance);
        // 交叉_x
        aePipeline.setCrossX(this.crossX);
        // 交叉_y
        aePipeline.setCrossY(this.crossY);
        // 交叉_z
        aePipeline.setCrossZ(this.crossZ);
        // 交叉_位置描述
        aePipeline.setLocationDescription(this.locationDescription);
        // 交叉_垂直间距（m）
        aePipeline.setAltitudeSeparation(this.altitudeSeparation);
        // 是否为安全间距（YES、NO）
        aePipeline.setSafeHeight(this.safeHeight);

        // id
        aePipeline.setId(this.getId());
        // 记录人
        aePipeline.setRecorder(this.getRecorder());
        // 记录时间
        Date recordTimeTemp = null;
        try {
            recordTimeTemp = DateUtil.allStr2Date(this.getRecordTime());
        } catch (Exception e) {
            e.printStackTrace();
        }
        aePipeline.setRecordTime(recordTimeTemp);
        // 备注
        aePipeline.setRemarks(this.getRemarks());

        return aePipeline;
    }
}